﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

/*
* 1.打开两个文件FileFourOperation.txt，FileFourOperationResult.txt；
* 2.判断可用性；
* 3.循环读取；
* 4.格式化字符串，sscanf(),计算结果；
* 5.写入FileFourOperationResult.txt中；
* 6.文件关闭；
*/

//main144：格式化行读取和行写入四则运算表达式文本
int main144()
{
	//1.打开两个文件FileFourOperation.txt，FileFourOperationResult.txt；注意：r,w,都是小写，大写编译通不过去；
	FILE* fpR = fopen("../../../file/FileFourOperation.txt", "r");
	FILE* fpW = fopen("../../../file/FileFourOperationResult.txt", "w");
	//2.判断可用性；
	if (!fpR || !fpW)
	{
		return -1;
	}
	int a, b;
	char c;
	float value = 0;
	char buf[20];
	//3.循环读取；FileFourOperation.txt中表达式字符串是100条，故循环次数为100；
	for (int i = 0; i < 100; i++)
	{
		memset(buf, 0, 20);
		fgets(buf, 20, fpR);//2+3=\n
		//5.格式化字符串，sscanf(),计算结果；
		//4.sscanf按照格式化拆解字符串buf，拆分出变量a,c,b；与sprinf相反，sprinf是按照格式化存入到字符串buf中；
		sscanf(buf, "%d%c%d=\n", &a, &c, &b);

		switch (c)
		{
		case '+':
			value = a + b;
			break;
		case '-':
			value = a - b;
			break;
		case '*':
			value = a * b;
			break;
		case '/':
			value = a * 1.0 / b;
			break;
		}

		//6.写入FileFourOperationResult.txt中；使用fprintf替换下面三行代码；
		/*memset(buf, 0, 20);
		sprintf(buf, "%d%c%d=%.2f\n", a, c, b, value);
		fputs(buf, fpW);*/
		fprintf(fpW, "%d%c%d=%.2f\n", a, c, b, value);
	}

	//7.文件关闭；
	fclose(fpR);
	fclose(fpW);

	system("pause");
	return EXIT_SUCCESS;
}